/**
 * Case.java - Case du plateau
 * 
 * @author BOURGE Denis && BEGORRE Alexandre
 * @version 1.0
 */

package elements.plateau;

import elements.jetons.Jeton;

import gui.JImagePanel;

public class Case {

	private Jeton		jeton;
	private CaseType	type;
	private JImagePanel	image;
	private String		pathToImage;

	/**
	 * Constructeur par défaut de la case
	 */
	public Case() {

		jeton = null;
		type = CaseType.NORMALE;
		image = new JImagePanel();
		pathToImage = "";
	}

	/**
	 * Constructeur complet de la case
	 * 
	 * @param j
	 *            Jeton à insérer (ou null)
	 * @param t
	 *            Type de la case (voir CaseType)
	 * @param pathToImage
	 *            Chemin vers l'image
	 * @see CaseType
	 */
	public Case(Jeton j, CaseType t, String pathToImage) {

		jeton = j;
		type = t;
		this.pathToImage = pathToImage;
		image = new JImagePanel(pathToImage);

		if (j != null) chargerJeton(j);
	}

	/**
	 * Charger un jeton dans la case
	 * 
	 * @param j
	 *            Jeton à charger
	 */
	public void chargerJeton(Jeton j) {

		jeton = j;

		this.mettreAJour();
	}

	/**
	 * Met à jour la case (recharge l'image)
	 */
	public void mettreAJour() {

		if (jeton != null) {
			image.loadImage("data/graphics/lettres/" + jeton.getLettre() + ".png");
			pathToImage = "data/graphics/lettres/" + jeton.getLettre() + ".png";

		} else {
			if (type == CaseType.RACK) {
				image.loadImage("data/graphics/lettres/vide.png");
				pathToImage = "data/graphics/lettres/vide.png";
			}

			else if (type == CaseType.NORMALE) {
				image.loadImage("data/graphics/cases/caseNormale.png");
				pathToImage = "data/graphics/cases/caseNormale.png";
			}

			else if (type == CaseType.LET_DOUBLE) {
				image.loadImage("data/graphics/cases/caseLettreDouble.png");
				pathToImage = "data/graphics/cases/caseLettreDouble.png";
			}

			else if (type == CaseType.LET_TRIPLE) {
				image.loadImage("data/graphics/cases/caseLettreTriple.png");
				pathToImage = "data/graphics/cases/caseLettreTriple.png";
			}

			else if (type == CaseType.MOT_DOUBLE) {
				image.loadImage("data/graphics/cases/caseMotDouble.png");
				pathToImage = "data/graphics/cases/caseMotDouble.png";
			}

			else if (type == CaseType.MOT_TRIPLE) {
				image.loadImage("data/graphics/cases/caseMotTriple.png");
				pathToImage = "data/graphics/cases/caseMotTriple.png";
			}

			else {
				image.loadImage("data/graphics/cases/caseDepart.png");
				pathToImage = "data/graphics/cases/caseDepart.png";
			}
		}
	}

	/**
	 * Retourne l'image de la case
	 * 
	 * @return L'image de la case
	 */
	public JImagePanel getImage() {

		return image;
	}

	/**
	 * Retourne le jeton de la case
	 * 
	 * @return Le jeton de la case
	 */
	public Jeton getJeton() {

		return jeton;

	}

	/**
	 * Retourne le type de la case
	 * 
	 * @return Le type de la case
	 */
	public CaseType getType() {

		return type;
	}

	/**
	 * Assigne le type de la case
	 * 
	 * @param type
	 *            Le type de la case
	 */
	public void setType(CaseType type) {

		this.type = type;
	}

	/**
	 * Retourne le chemin vers l'image
	 * 
	 * @return Le chemin vers l'image
	 */
	public String getPathToImage() {

		return pathToImage;
	}
}
